草庐IT

Android StrictMode 和堆转储

全部标签

linux - 从进程内部转储 Linux 核心文件的好方法是什么?

我们有一个服务器(用C和C++编写)当前捕获SEGV并将一些内部信息转储到文件中。我想在捕获SEGV时生成一个核心文件并将其写入磁盘,这样我们的支持代表和客户就不必为ulimit大惊小怪,然后等待崩溃再次发生以获得核心文件。我们过去使用过abort函数,但它受ulimit规则的约束,没有帮助。我们有一些遗留代码读取/proc/pid/map并手动生成一个核心文件,但它已经过时了,而且看起来不太便携(例如,我猜它不会在我们的64位版本)。在Linux进程中生成和转储核心文件的最佳方法是什么? 最佳答案 Google有一个库,用于从名为

linux - 为什么会生成核心转储文件?

有时当我运行我的代码时,当我通过Ctrl+\终止程序时会生成核心转储文件。文件名的格式为core.*。程序没有突然终止,也没有段错误。我相信它是SIGQUIT而不是SIGABRT或SIGSEGV。如果我尝试Ctrl+C或Ctrl+Z,则它不会生成。谁能说出为什么它只在按下Ctrl+\时生成?如何避免生成此核心转储文件?核心转储文件有什么用吗? 最佳答案 当一个进程由于程序错误而被操作系统终止时,它会转储核心。发生这种情况的最典型原因是因为程序访问了无效的指针值。鉴于您有零星的转储,很可能您使用的是未初始化的指针。您可以发布导致错误的

linux - 为什么会生成核心转储文件?

有时当我运行我的代码时,当我通过Ctrl+\终止程序时会生成核心转储文件。文件名的格式为core.*。程序没有突然终止,也没有段错误。我相信它是SIGQUIT而不是SIGABRT或SIGSEGV。如果我尝试Ctrl+C或Ctrl+Z,则它不会生成。谁能说出为什么它只在按下Ctrl+\时生成?如何避免生成此核心转储文件?核心转储文件有什么用吗? 最佳答案 当一个进程由于程序错误而被操作系统终止时,它会转储核心。发生这种情况的最典型原因是因为程序访问了无效的指针值。鉴于您有零星的转储,很可能您使用的是未初始化的指针。您可以发布导致错误的

linux - "Unexplainable"核心转储

我这辈子见过很多核心转储,但这个让我难住了。上下文:在AMDBarcelona集群上运行的多线程Linux/x86_64程序CPU崩溃的代码执行了很多在负载下运行1000个程序实例(完全相同的优化二进制文件)每小时会产生1-2次崩溃崩溃发生在不同的机器上(但机器本身非常相同)崩溃看起来都一样(相同的确切地址,相同的调用堆栈)以下是崩溃的详细信息:Programterminatedwithsignal11,Segmentationfault.#00x00000000017bd9fdinFoo()(gdb)x/i$pc=>0x17bd9fd:rex.RBorb$0x8d,(%r15)(gd

linux - "Unexplainable"核心转储

我这辈子见过很多核心转储,但这个让我难住了。上下文:在AMDBarcelona集群上运行的多线程Linux/x86_64程序CPU崩溃的代码执行了很多在负载下运行1000个程序实例(完全相同的优化二进制文件)每小时会产生1-2次崩溃崩溃发生在不同的机器上(但机器本身非常相同)崩溃看起来都一样(相同的确切地址,相同的调用堆栈)以下是崩溃的详细信息:Programterminatedwithsignal11,Segmentationfault.#00x00000000017bd9fdinFoo()(gdb)x/i$pc=>0x17bd9fd:rex.RBorb$0x8d,(%r15)(gd

PHPUnit - 转储变量

我刚开始使用PHPUnit,想知道是否有转储变量内容的构建方式?用例是因为我已经在与正在开发的代码对话,所以我不仅可以使用PHPUnit来测试该代码的稳定性,还可以在开发过程中输出调试信息。我知道xdebug可以为我填补这个空白,但有时在输出中转储一些信息比摆弄我的IDE调试器更容易,这对于追溯错误的原因更有用。我知道我可以做一个常规的var_dump,我只是想知道PHPUnit是否有一个接口(interface)。谢谢!编辑:决定按照David的回答将其组合在一起。绝不是一个完美的解决方案,但它适合我。如果有人感兴趣:***PHPUnit-3.6.3/PHPUnit/Framewor

PHPUnit - 转储变量

我刚开始使用PHPUnit,想知道是否有转储变量内容的构建方式?用例是因为我已经在与正在开发的代码对话,所以我不仅可以使用PHPUnit来测试该代码的稳定性,还可以在开发过程中输出调试信息。我知道xdebug可以为我填补这个空白,但有时在输出中转储一些信息比摆弄我的IDE调试器更容易,这对于追溯错误的原因更有用。我知道我可以做一个常规的var_dump,我只是想知道PHPUnit是否有一个接口(interface)。谢谢!编辑:决定按照David的回答将其组合在一起。绝不是一个完美的解决方案,但它适合我。如果有人感兴趣:***PHPUnit-3.6.3/PHPUnit/Framewor

php - Postgres pg_dump 每次都以不同的顺序转储数据库

我正在编写一个PHP脚本(它也使用linuxbash命令),它将通过执行以下操作来运行测试用例:我正在使用PostgreSQL数据库(8.4.2)...1.)创建数据库2.)修改数据库3.)存储数据库的数据库转储(pg_dump)4.)通过执行步骤1.)和2.)进行回归测试,然后获取另一个数据库转储并将其与步骤3.)中的原始数据库转储进行比较(差异)但是,我发现pg_dump不会总是以相同的方式转储数据库。它每次都会以不同的顺序转储东西。因此,当我对两个数据库转储进行比较时,比较将导致两个文件不同,而实际上它们是相同的,只是顺序不同。我可以采用不同的方式来执行pg_dump吗?谢谢!

php - Postgres pg_dump 每次都以不同的顺序转储数据库

我正在编写一个PHP脚本(它也使用linuxbash命令),它将通过执行以下操作来运行测试用例:我正在使用PostgreSQL数据库(8.4.2)...1.)创建数据库2.)修改数据库3.)存储数据库的数据库转储(pg_dump)4.)通过执行步骤1.)和2.)进行回归测试,然后获取另一个数据库转储并将其与步骤3.)中的原始数据库转储进行比较(差异)但是,我发现pg_dump不会总是以相同的方式转储数据库。它每次都会以不同的顺序转储东西。因此,当我对两个数据库转储进行比较时,比较将导致两个文件不同,而实际上它们是相同的,只是顺序不同。我可以采用不同的方式来执行pg_dump吗?谢谢!

PHP cli 从用户那里获取输入然后转储到变量中可能吗?

是否可以使用phpcli从用户那里获取输入,然后将输入转储到变量中,然后脚本继续运行。就像c++的cin函数一样?这可能吗?如果是,那怎么办?也许不仅是php,也许还有一些linux命令? 最佳答案 要在phpCLI模式下从标准输入读取一行,你可以这样做:$fin=fopen("php://stdin","r");$line=fgets($fin);在旧版本的PHP上,STDIN常量也可以工作$line=fgets(STDIN);要从输入中读取所有内容,请使用:file_get_contents('php://input');